/* 
输入一个整型数组，数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

要求时间复杂度为O(n)。


输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大，为 6。


思路：遍历每一项的时候求和，如果求和小于0，就重新从当前项开始求和，求和大于0就继续累加，每次遍历都比较之前存的和与当前和的大小，存入较大值，

*/

/**
 * @param {number[]} nums
 * @return {number}
 */
 var maxSubArray = function(nums) {
    let ans=nums[0]
    let sum=0
    for (const num of nums) {
        if(sum>0){
            sum+=num
        }else{
            sum=num
        }
        ans=Math.max(ans,sum)
    }
    return ans
};

let nums = [-2,1,-3,4,-1,2,1,-5,4]

let res = maxSubArray(nums)
console.log(res);